package HashMap;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.function.BiConsumer;

public class Test1 {
    public static void main(String[] args) {
        HashMap<Student,String> hm=new HashMap<>();
        Student s1=new Student("zhangsan",24);
        Student s2=new Student("lisi",25);
        Student s3=new Student("wangwu",26);

        hm.put(s1,"江苏");
        hm.put(s2,"浙江");
        hm.put(s3,"福建");
        System.out.println(hm);
//        Set<Student> keys = hm.keySet();
//        for (Student key : keys) {
//            String s = hm.get(key);
//            System.out.println(key+"="+s);
//        }
//        Set<Map.Entry<Student, String>> entries = hm.entrySet();
//        for (Map.Entry<Student, String> entry : entries) {
//            Student key = entry.getKey();
//            String value = entry.getValue();
//            System.out.println(key+"="+value);
//        }
        hm.forEach(new BiConsumer<Student, String>() {
            @Override
            public void accept(Student student, String s) {
                System.out.println(student+"="+s);
            }
        });

    }
}

class Student {

    private String name;
    private int age;


    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }

    @Override
    public boolean equals(Object o) {
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}
